/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import Dao.ClienteDao;
import Dao.FuncionarioDao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.RollbackException;
import pojo.Cliente;
import pojo.Funcionario;

/**
 *
 * @author jonatan
 */
@ManagedBean(name="beanFuncionario")
@SessionScoped
public class FuncionarioBean {
    
    
     private FuncionarioDao funcionariodao = new FuncionarioDao();
    private Funcionario funcionario = new Funcionario();
    private List<Funcionario> listafuncionario = new ArrayList<Funcionario>();
    private Funcionario excluido;

    public FuncionarioBean() {
    }

    public FuncionarioDao getFuncionariodao() {
        return funcionariodao;
    }

    public void setFuncionariodao(FuncionarioDao funcionariodao) {
        this.funcionariodao = funcionariodao;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public List<Funcionario> getListafuncionario() {
        return listafuncionario;
    }

    public void setListafuncionario(List<Funcionario> listafuncionario) {
        this.listafuncionario = listafuncionario;
    }

    public Funcionario getExcluido() {
        return excluido;
    }

    public void setExcluido(Funcionario excluido) {
        this.excluido = excluido;
    }
    
    public String salvar() {
       funcionariodao .Gravar(funcionario);
       funcionario = new Funcionario();
       FacesContext context = FacesContext.getCurrentInstance();
       context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
       return "CadastroFuncionario.xhtml";
            
    }
     public List<Funcionario> listafuncionario() {
        return listafuncionario = funcionariodao.Listar(Funcionario.class);
    }
    
    public String removerfuncionario(Funcionario obj) {
        try {
            funcionariodao.Remover(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Cliente removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Cliente já esta em uso, não pode ser removido."));
        }
        return "CadastroCliente.xhtml";
    }
    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        excluido = (Funcionario) param.getValue();
    }
    
    public void remover() {
        removerfuncionario(excluido);
        excluido = null;
    }

    public void alterar(Funcionario obj) {
        obj = funcionariodao.Buscar(obj.getId());
        this.funcionario = obj;
    }

    public String cancelar() {
       funcionario = new Funcionario();
        return "CadastroFuncionario.xhtml";
    }

    public String paginaCliente() {
        return "CadastroFuncionario.xhtml";
    }
    
    
    
    
}
